ABI: {
    ast: {
        absolutePath: string;
        exportedSymbols: {
            Address: number[];
            Context: number[];
            Counters: number[];
            ERC165: number[];
            ERC721: number[];
            ERC721URIStorage: number[];
            IERC165: number[];
            IERC4906: number[];
            IERC721: number[];
            IERC721Metadata: number[];
            IERC721Receiver: number[];
            Math: number[];
            Ownable: number[];
            SignedMath: number[];
            Strings: number[];
            Ticket: number[];
            TicketAsset: number[];
        };
        id: number;
        license: string;
        nodeType: string;
        nodes: ({
            absolutePath?: undefined;
            abstract?: undefined;
            baseContracts?: undefined;
            canonicalName?: undefined;
            contractDependencies?: undefined;
            contractKind?: undefined;
            file?: undefined;
            fullyImplemented?: undefined;
            id: number;
            linearizedBaseContracts?: undefined;
            literals: string[];
            name?: undefined;
            nameLocation?: undefined;
            nodeType: string;
            nodes?: undefined;
            scope?: undefined;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors?: undefined;
        } | {
            absolutePath: string;
            abstract?: undefined;
            baseContracts?: undefined;
            canonicalName?: undefined;
            contractDependencies?: undefined;
            contractKind?: undefined;
            file: string;
            fullyImplemented?: undefined;
            id: number;
            linearizedBaseContracts?: undefined;
            literals?: undefined;
            name?: undefined;
            nameLocation: string;
            nodeType: string;
            nodes?: undefined;
            scope: number;
            sourceUnit: number;
            src: string;
            symbolAliases: never[];
            unitAlias: string;
            usedErrors?: undefined;
        } | {
            absolutePath?: undefined;
            abstract: boolean;
            baseContracts: {
                baseName: {
                    id: number;
                    name: string;
                    nameLocations: string[];
                    nodeType: string;
                    referencedDeclaration: number;
                    src: string;
                };
                id: number;
                nodeType: string;
                src: string;
            }[];
            canonicalName: string;
            contractDependencies: never[];
            contractKind: string;
            file?: undefined;
            fullyImplemented: boolean;
            id: number;
            linearizedBaseContracts: number[];
            literals?: undefined;
            name: string;
            nameLocation: string;
            nodeType: string;
            nodes: ({
                body?: undefined;
                constant?: undefined;
                functionSelector?: undefined;
                global: boolean;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName: {
                    id: number;
                    name: string;
                    nameLocations: string[];
                    nodeType: string;
                    referencedDeclaration: number;
                    src: string;
                };
                modifiers?: undefined;
                mutability?: undefined;
                name?: undefined;
                nameLocation?: undefined;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope?: undefined;
                src: string;
                stateMutability?: undefined;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name?: undefined;
                    nodeType: string;
                    pathNode: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    referencedDeclaration: number;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value?: undefined;
                virtual?: undefined;
                visibility?: undefined;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name?: undefined;
                    nodeType: string;
                    pathNode: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    referencedDeclaration: number;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value?: undefined;
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name: string;
                    nodeType: string;
                    pathNode?: undefined;
                    referencedDeclaration?: undefined;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value: {
                    hexValue: string;
                    id: number;
                    isConstant: boolean;
                    isLValue: boolean;
                    isPure: boolean;
                    kind: string;
                    lValueRequested: boolean;
                    nodeType: string;
                    src: string;
                    subdenomination: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    value: string;
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName: string;
                    keyNameLocation: string;
                    keyType: {
                        id: number;
                        name: string;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                    };
                    name?: undefined;
                    nodeType: string;
                    pathNode?: undefined;
                    referencedDeclaration?: undefined;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName: string;
                    valueNameLocation: string;
                    valueType: {
                        baseType: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                    };
                };
                value?: undefined;
                virtual?: undefined;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: never[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: {
                    arguments: {
                        hexValue: string;
                        id: number;
                        isConstant: boolean;
                        isLValue: boolean;
                        isPure: boolean;
                        kind: string;
                        lValueRequested: boolean;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        value: string;
                    }[];
                    id: number;
                    kind: string;
                    modifierName: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    nodeType: string;
                    src: string;
                }[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    commonType: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    leftExpression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    nodeType: string;
                                    operator: string;
                                    rightExpression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            expression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                baseType: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        id: number;
                        initialValue: {
                            arguments: ({
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                name?: undefined;
                                nodeType: string;
                                overloadedDeclarations?: undefined;
                                referencedDeclaration?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            } | {
                                expression?: undefined;
                                id: number;
                                isConstant?: undefined;
                                isLValue?: undefined;
                                isPure?: undefined;
                                lValueRequested?: undefined;
                                memberLocation?: undefined;
                                memberName?: undefined;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind?: undefined;
                            lValueRequested: boolean;
                            leftHandSide: {
                                baseExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                indexExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            expression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        body: {
                            id: number;
                            nodeType: string;
                            src: string;
                            statements: ({
                                assignments: number[];
                                declarations: {
                                    constant: boolean;
                                    id: number;
                                    mutability: string;
                                    name: string;
                                    nameLocation: string;
                                    nodeType: string;
                                    scope: number;
                                    src: string;
                                    stateVariable: boolean;
                                    storageLocation: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    typeName: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    visibility: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                initialValue: {
                                    baseExpression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    indexExpression: {
                                        commonType: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        leftExpression: {
                                            expression: {
                                                baseExpression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                id: number;
                                                indexExpression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                isConstant: boolean;
                                                isLValue: boolean;
                                                isPure: boolean;
                                                lValueRequested: boolean;
                                                nodeType: string;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        nodeType: string;
                                        operator: string;
                                        rightExpression: {
                                            hexValue: string;
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            kind: string;
                                            lValueRequested: boolean;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                            value: string;
                                        };
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            baseExpression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            indexExpression: {
                                                expression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                id: number;
                                                isConstant: boolean;
                                                isLValue: boolean;
                                                isPure: boolean;
                                                lValueRequested: boolean;
                                                memberLocation: string;
                                                memberName: string;
                                                nodeType: string;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration?: undefined;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    }[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: number[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                        };
                        condition: {
                            commonType: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        expression?: undefined;
                        id: number;
                        initializationExpression: {
                            assignments: number[];
                            declarations: {
                                constant: boolean;
                                id: number;
                                mutability: string;
                                name: string;
                                nameLocation: string;
                                nodeType: string;
                                scope: number;
                                src: string;
                                stateVariable: boolean;
                                storageLocation: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                visibility: string;
                            }[];
                            id: number;
                            initialValue: {
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        loopExpression: {
                            expression: {
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                operator: string;
                                prefix: boolean;
                                src: string;
                                subExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        assignments?: undefined;
                        body?: undefined;
                        condition?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            name?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            overloadedDeclarations?: undefined;
                            referencedDeclaration?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        body?: undefined;
                        condition?: undefined;
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                baseType: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue: {
                            arguments: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            }[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    baseType: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        body?: undefined;
                        condition?: undefined;
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                id: number;
                                name: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue: string;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value: string;
                        };
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        body: {
                            id: number;
                            nodeType: string;
                            src: string;
                            statements: ({
                                assignments: number[];
                                declarations: {
                                    constant: boolean;
                                    id: number;
                                    mutability: string;
                                    name: string;
                                    nameLocation: string;
                                    nodeType: string;
                                    scope: number;
                                    src: string;
                                    stateVariable: boolean;
                                    storageLocation: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    typeName: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    visibility: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                initialValue: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        nodeType: string;
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: ({
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration?: undefined;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    } | {
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    })[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    leftHandSide?: undefined;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    operator?: undefined;
                                    rightHandSide?: undefined;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    leftHandSide?: undefined;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    operator?: undefined;
                                    rightHandSide?: undefined;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments?: undefined;
                                    expression?: undefined;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind?: undefined;
                                    lValueRequested: boolean;
                                    leftHandSide: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    nameLocations?: undefined;
                                    names?: undefined;
                                    nodeType: string;
                                    operator: string;
                                    rightHandSide: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    src: string;
                                    tryCall?: undefined;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                        };
                        condition: {
                            commonType: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        declarations?: undefined;
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression: {
                            assignments: number[];
                            declarations: {
                                constant: boolean;
                                id: number;
                                mutability: string;
                                name: string;
                                nameLocation: string;
                                nodeType: string;
                                scope: number;
                                src: string;
                                stateVariable: boolean;
                                storageLocation: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                visibility: string;
                            }[];
                            id: number;
                            initialValue: {
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        loopExpression: {
                            expression: {
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                operator: string;
                                prefix: boolean;
                                src: string;
                                subExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        body?: undefined;
                        condition?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            id: number;
                            isConstant?: undefined;
                            isLValue?: undefined;
                            isPure?: undefined;
                            kind?: undefined;
                            lValueRequested?: undefined;
                            name: string;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            overloadedDeclarations: never[];
                            referencedDeclaration: number;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters: number;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            baseType: {
                                id: number;
                                name: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            })[];
            scope: number;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors: never[];
        } | {
            absolutePath?: undefined;
            abstract: boolean;
            baseContracts: never[];
            canonicalName: string;
            contractDependencies: never[];
            contractKind: string;
            file?: undefined;
            fullyImplemented: boolean;
            id: number;
            linearizedBaseContracts: number[];
            literals?: undefined;
            name: string;
            nameLocation: string;
            nodeType: string;
            nodes: ({
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    name: string;
                    nodeType: string;
                    src: string;
                    stateMutability?: undefined;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    name: string;
                    nodeType: string;
                    src: string;
                    stateMutability: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        nodeType: string;
                        src: string;
                    }[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                isConstant?: undefined;
                                isLValue?: undefined;
                                isPure?: undefined;
                                lValueRequested?: undefined;
                                memberLocation?: undefined;
                                memberName?: undefined;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments: {
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            }[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                expression: {
                                    arguments: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    }[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                        typeName: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                            stateMutability: string;
                                            typeDescriptions: {};
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                name?: undefined;
                                nodeType: string;
                                overloadedDeclarations?: undefined;
                                referencedDeclaration?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind?: undefined;
                            lValueRequested: boolean;
                            leftHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue: string;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value: string;
                        };
                        functionReturnParameters: number;
                        id: number;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            id: number;
                            name: string;
                            nodeType: string;
                            overloadedDeclarations: never[];
                            referencedDeclaration: number;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters: number;
                        id: number;
                        nodeType: string;
                        src: string;
                    }[];
                };
                constant?: undefined;
                functionSelector: string;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            })[];
            scope: number;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors: never[];
        })[];
        src: string;
    };
    bytecode: string;
    compiler: {
        name: string;
        version: string;
    };
    default: ({
        inputs: {
            internalType: string;
            name: string;
            type: string;
        }[];
        name?: undefined;
        outputs?: undefined;
        stateMutability: string;
        type: string;
    } | {
        inputs: never[];
        name: string;
        outputs: {
            internalType: string;
            name: string;
            type: string;
        }[];
        stateMutability: string;
        type: string;
    })[];
    deployedBytecode: string;
    deployedGeneratedSources: {
        ast: {
            nodeType: string;
            src: string;
            statements: ({
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value: {
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: ({
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    } | {
                                        arguments: {
                                            arguments: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        post: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        pre: {
                            nodeType: string;
                            src: string;
                            statements: never[];
                        };
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            name: string;
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters?: undefined;
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                hexValue?: undefined;
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                hexValue: string;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            })[];
        };
        contents: string;
        id: number;
        language: string;
        name: string;
    }[];
    deployedSourceMap: string;
    devdoc: {
        kind: string;
        methods: {};
        version: number;
    };
    generatedSources: {
        ast: {
            nodeType: string;
            src: string;
            statements: ({
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters?: undefined;
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters?: undefined;
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            } | {
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value: {
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: ({
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    } | {
                                        arguments: {
                                            arguments: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        post: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        pre: {
                            nodeType: string;
                            src: string;
                            statements: never[];
                        };
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                arguments: ({
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                } | {
                                    arguments?: undefined;
                                    functionName?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: {
                                        kind: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                arguments: ({
                                    arguments?: undefined;
                                    functionName?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                } | {
                                    arguments: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    } | {
                        expression: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        statements?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        statements: ({
                            body?: undefined;
                            condition?: undefined;
                            nodeType: string;
                            src: string;
                            value: {
                                arguments: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            };
                            variableNames?: undefined;
                            variables: {
                                name: string;
                                nodeType: string;
                                src: string;
                                type: string;
                            }[];
                        } | {
                            body: {
                                nodeType: string;
                                src: string;
                                statements: {
                                    expression: {
                                        arguments: never[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                }[];
                            };
                            condition: {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                            value?: undefined;
                            variableNames?: undefined;
                            variables?: undefined;
                        } | {
                            body?: undefined;
                            condition?: undefined;
                            nodeType: string;
                            src: string;
                            value: {
                                arguments: ({
                                    arguments: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                } | {
                                    arguments?: undefined;
                                    functionName?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            };
                            variableNames: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            variables?: undefined;
                        })[];
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        statements: ({
                            nodeType: string;
                            src: string;
                            value: {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            };
                            variableNames?: undefined;
                            variables: {
                                name: string;
                                nodeType: string;
                                src: string;
                                type: string;
                            }[];
                        } | {
                            nodeType: string;
                            src: string;
                            value: {
                                arguments: ({
                                    arguments: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                } | {
                                    arguments?: undefined;
                                    functionName?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            };
                            variableNames: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            variables?: undefined;
                        })[];
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments?: undefined;
                            functionName?: undefined;
                            name: string;
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            } | {
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                    } | {
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            name?: undefined;
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: {
                                    arguments: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    arguments: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    }[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                } | {
                                    arguments?: undefined;
                                    functionName?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters?: undefined;
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        post: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        pre: {
                            nodeType: string;
                            src: string;
                            statements: never[];
                        };
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: ({
                                body?: undefined;
                                condition?: undefined;
                                expression?: undefined;
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        arguments?: undefined;
                                        functionName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    } | {
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variables: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                }[];
                            } | {
                                body: {
                                    nodeType: string;
                                    src: string;
                                    statements: {
                                        nodeType: string;
                                        src: string;
                                        value: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        variableNames: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                    }[];
                                };
                                condition: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                expression?: undefined;
                                nodeType: string;
                                src: string;
                                value?: undefined;
                                variables?: undefined;
                            } | {
                                body?: undefined;
                                condition?: undefined;
                                expression: {
                                    arguments: ({
                                        arguments?: undefined;
                                        functionName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    } | {
                                        arguments: ({
                                            arguments?: undefined;
                                            functionName?: undefined;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        } | {
                                            arguments: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            name?: undefined;
                                            nodeType: string;
                                            src: string;
                                        })[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                                value?: undefined;
                                variables?: undefined;
                            })[];
                        };
                        condition: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: {
                                    arguments: ({
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    } | {
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        cases?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            kind?: undefined;
                            nodeType: string;
                            src: string;
                            type?: undefined;
                            value?: undefined;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        cases?: undefined;
                        condition: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        cases?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            kind?: undefined;
                            nodeType: string;
                            src: string;
                            type?: undefined;
                            value?: undefined;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body?: undefined;
                        cases?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        cases?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments?: undefined;
                            functionName?: undefined;
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body?: undefined;
                        cases?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments?: undefined;
                            functionName?: undefined;
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        cases: ({
                            body: {
                                nodeType: string;
                                src: string;
                                statements: ({
                                    body?: undefined;
                                    condition?: undefined;
                                    expression?: undefined;
                                    nodeType: string;
                                    post?: undefined;
                                    pre?: undefined;
                                    src: string;
                                    value: {
                                        arguments: ({
                                            arguments?: undefined;
                                            functionName?: undefined;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        } | {
                                            arguments: {
                                                kind: string;
                                                nodeType: string;
                                                src: string;
                                                type: string;
                                                value: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            name?: undefined;
                                            nodeType: string;
                                            src: string;
                                        })[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        kind?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    };
                                    variables: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                    }[];
                                } | {
                                    body?: undefined;
                                    condition?: undefined;
                                    expression?: undefined;
                                    nodeType: string;
                                    post?: undefined;
                                    pre?: undefined;
                                    src: string;
                                    value: {
                                        arguments?: undefined;
                                        functionName?: undefined;
                                        kind: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    };
                                    variables: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                    }[];
                                } | {
                                    body: {
                                        nodeType: string;
                                        src: string;
                                        statements: ({
                                            expression: {
                                                arguments: ({
                                                    arguments?: undefined;
                                                    functionName?: undefined;
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                } | {
                                                    arguments: {
                                                        arguments: {
                                                            name: string;
                                                            nodeType: string;
                                                            src: string;
                                                        }[];
                                                        functionName: {
                                                            name: string;
                                                            nodeType: string;
                                                            src: string;
                                                        };
                                                        nodeType: string;
                                                        src: string;
                                                    }[];
                                                    functionName: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    };
                                                    name?: undefined;
                                                    nodeType: string;
                                                    src: string;
                                                })[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            nodeType: string;
                                            src: string;
                                            value?: undefined;
                                            variableNames?: undefined;
                                        } | {
                                            expression?: undefined;
                                            nodeType: string;
                                            src: string;
                                            value: {
                                                arguments: ({
                                                    kind?: undefined;
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                    type?: undefined;
                                                    value?: undefined;
                                                } | {
                                                    kind: string;
                                                    name?: undefined;
                                                    nodeType: string;
                                                    src: string;
                                                    type: string;
                                                    value: string;
                                                })[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            variableNames: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                        })[];
                                    };
                                    condition: {
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    };
                                    expression?: undefined;
                                    nodeType: string;
                                    post: {
                                        nodeType: string;
                                        src: string;
                                        statements: {
                                            nodeType: string;
                                            src: string;
                                            value: {
                                                arguments: ({
                                                    kind?: undefined;
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                    type?: undefined;
                                                    value?: undefined;
                                                } | {
                                                    kind: string;
                                                    name?: undefined;
                                                    nodeType: string;
                                                    src: string;
                                                    type: string;
                                                    value: string;
                                                })[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            variableNames: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                        }[];
                                    };
                                    pre: {
                                        nodeType: string;
                                        src: string;
                                        statements: never[];
                                    };
                                    src: string;
                                    value?: undefined;
                                    variables?: undefined;
                                } | {
                                    body: {
                                        nodeType: string;
                                        src: string;
                                        statements: ({
                                            expression?: undefined;
                                            nodeType: string;
                                            src: string;
                                            value: {
                                                arguments: {
                                                    arguments: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    }[];
                                                    functionName: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    };
                                                    nodeType: string;
                                                    src: string;
                                                }[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            variables: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                                type: string;
                                            }[];
                                        } | {
                                            expression: {
                                                arguments: ({
                                                    arguments?: undefined;
                                                    functionName?: undefined;
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                } | {
                                                    arguments: ({
                                                        arguments?: undefined;
                                                        functionName?: undefined;
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    } | {
                                                        arguments: ({
                                                            kind?: undefined;
                                                            name: string;
                                                            nodeType: string;
                                                            src: string;
                                                            type?: undefined;
                                                            value?: undefined;
                                                        } | {
                                                            kind: string;
                                                            name?: undefined;
                                                            nodeType: string;
                                                            src: string;
                                                            type: string;
                                                            value: string;
                                                        })[];
                                                        functionName: {
                                                            name: string;
                                                            nodeType: string;
                                                            src: string;
                                                        };
                                                        name?: undefined;
                                                        nodeType: string;
                                                        src: string;
                                                    })[];
                                                    functionName: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    };
                                                    name?: undefined;
                                                    nodeType: string;
                                                    src: string;
                                                })[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            nodeType: string;
                                            src: string;
                                            value?: undefined;
                                            variables?: undefined;
                                        })[];
                                    };
                                    condition: {
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    };
                                    expression?: undefined;
                                    nodeType: string;
                                    post?: undefined;
                                    pre?: undefined;
                                    src: string;
                                    value?: undefined;
                                    variables?: undefined;
                                } | {
                                    body?: undefined;
                                    condition?: undefined;
                                    expression: {
                                        arguments: ({
                                            arguments?: undefined;
                                            functionName?: undefined;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        } | {
                                            arguments: ({
                                                arguments: ({
                                                    kind?: undefined;
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                    type?: undefined;
                                                    value?: undefined;
                                                } | {
                                                    kind: string;
                                                    name?: undefined;
                                                    nodeType: string;
                                                    src: string;
                                                    type: string;
                                                    value: string;
                                                })[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                kind?: undefined;
                                                nodeType: string;
                                                src: string;
                                                type?: undefined;
                                                value?: undefined;
                                            } | {
                                                arguments?: undefined;
                                                functionName?: undefined;
                                                kind: string;
                                                nodeType: string;
                                                src: string;
                                                type: string;
                                                value: string;
                                            })[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            name?: undefined;
                                            nodeType: string;
                                            src: string;
                                        })[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    post?: undefined;
                                    pre?: undefined;
                                    src: string;
                                    value?: undefined;
                                    variables?: undefined;
                                })[];
                            };
                            nodeType: string;
                            src: string;
                            value: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            };
                        } | {
                            body: {
                                nodeType: string;
                                src: string;
                                statements: ({
                                    body?: undefined;
                                    condition?: undefined;
                                    expression?: undefined;
                                    nodeType: string;
                                    src: string;
                                    value: {
                                        kind: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    };
                                    variables: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                    }[];
                                } | {
                                    body: {
                                        nodeType: string;
                                        src: string;
                                        statements: {
                                            nodeType: string;
                                            src: string;
                                            value: {
                                                arguments: {
                                                    arguments: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    }[];
                                                    functionName: {
                                                        name: string;
                                                        nodeType: string;
                                                        src: string;
                                                    };
                                                    nodeType: string;
                                                    src: string;
                                                }[];
                                                functionName: {
                                                    name: string;
                                                    nodeType: string;
                                                    src: string;
                                                };
                                                nodeType: string;
                                                src: string;
                                            };
                                            variableNames: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                        }[];
                                    };
                                    condition: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    expression?: undefined;
                                    nodeType: string;
                                    src: string;
                                    value?: undefined;
                                    variables?: undefined;
                                } | {
                                    body?: undefined;
                                    condition?: undefined;
                                    expression: {
                                        arguments: ({
                                            arguments?: undefined;
                                            functionName?: undefined;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        } | {
                                            arguments: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            name?: undefined;
                                            nodeType: string;
                                            src: string;
                                        })[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                    value?: undefined;
                                    variables?: undefined;
                                })[];
                            };
                            nodeType: string;
                            src: string;
                            value: string;
                        })[];
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            })[];
        };
        contents: string;
        id: number;
        language: string;
        name: string;
    }[];
    immutableReferences: {};
    metadata: string;
    networks: {};
    schemaVersion: string;
    source: string;
    sourceMap: string;
    sourcePath: string;
    updatedAt: string;
    userdoc: {
        kind: string;
        methods: {};
        version: number;
    };
} = ...

Type declaration

  • ast: {
        absolutePath: string;
        exportedSymbols: {
            Address: number[];
            Context: number[];
            Counters: number[];
            ERC165: number[];
            ERC721: number[];
            ERC721URIStorage: number[];
            IERC165: number[];
            IERC4906: number[];
            IERC721: number[];
            IERC721Metadata: number[];
            IERC721Receiver: number[];
            Math: number[];
            Ownable: number[];
            SignedMath: number[];
            Strings: number[];
            Ticket: number[];
            TicketAsset: number[];
        };
        id: number;
        license: string;
        nodeType: string;
        nodes: ({
            absolutePath?: undefined;
            abstract?: undefined;
            baseContracts?: undefined;
            canonicalName?: undefined;
            contractDependencies?: undefined;
            contractKind?: undefined;
            file?: undefined;
            fullyImplemented?: undefined;
            id: number;
            linearizedBaseContracts?: undefined;
            literals: string[];
            name?: undefined;
            nameLocation?: undefined;
            nodeType: string;
            nodes?: undefined;
            scope?: undefined;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors?: undefined;
        } | {
            absolutePath: string;
            abstract?: undefined;
            baseContracts?: undefined;
            canonicalName?: undefined;
            contractDependencies?: undefined;
            contractKind?: undefined;
            file: string;
            fullyImplemented?: undefined;
            id: number;
            linearizedBaseContracts?: undefined;
            literals?: undefined;
            name?: undefined;
            nameLocation: string;
            nodeType: string;
            nodes?: undefined;
            scope: number;
            sourceUnit: number;
            src: string;
            symbolAliases: never[];
            unitAlias: string;
            usedErrors?: undefined;
        } | {
            absolutePath?: undefined;
            abstract: boolean;
            baseContracts: {
                baseName: {
                    id: number;
                    name: string;
                    nameLocations: string[];
                    nodeType: string;
                    referencedDeclaration: number;
                    src: string;
                };
                id: number;
                nodeType: string;
                src: string;
            }[];
            canonicalName: string;
            contractDependencies: never[];
            contractKind: string;
            file?: undefined;
            fullyImplemented: boolean;
            id: number;
            linearizedBaseContracts: number[];
            literals?: undefined;
            name: string;
            nameLocation: string;
            nodeType: string;
            nodes: ({
                body?: undefined;
                constant?: undefined;
                functionSelector?: undefined;
                global: boolean;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName: {
                    id: number;
                    name: string;
                    nameLocations: string[];
                    nodeType: string;
                    referencedDeclaration: number;
                    src: string;
                };
                modifiers?: undefined;
                mutability?: undefined;
                name?: undefined;
                nameLocation?: undefined;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope?: undefined;
                src: string;
                stateMutability?: undefined;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name?: undefined;
                    nodeType: string;
                    pathNode: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    referencedDeclaration: number;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value?: undefined;
                virtual?: undefined;
                visibility?: undefined;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name?: undefined;
                    nodeType: string;
                    pathNode: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    referencedDeclaration: number;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value?: undefined;
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName?: undefined;
                    keyNameLocation?: undefined;
                    keyType?: undefined;
                    name: string;
                    nodeType: string;
                    pathNode?: undefined;
                    referencedDeclaration?: undefined;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName?: undefined;
                    valueNameLocation?: undefined;
                    valueType?: undefined;
                };
                value: {
                    hexValue: string;
                    id: number;
                    isConstant: boolean;
                    isLValue: boolean;
                    isPure: boolean;
                    kind: string;
                    lValueRequested: boolean;
                    nodeType: string;
                    src: string;
                    subdenomination: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    value: string;
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                libraryName?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    keyName: string;
                    keyNameLocation: string;
                    keyType: {
                        id: number;
                        name: string;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                    };
                    name?: undefined;
                    nodeType: string;
                    pathNode?: undefined;
                    referencedDeclaration?: undefined;
                    src: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                    valueName: string;
                    valueNameLocation: string;
                    valueType: {
                        baseType: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                    };
                };
                value?: undefined;
                virtual?: undefined;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: never[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: {
                    arguments: {
                        hexValue: string;
                        id: number;
                        isConstant: boolean;
                        isLValue: boolean;
                        isPure: boolean;
                        kind: string;
                        lValueRequested: boolean;
                        nodeType: string;
                        src: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        value: string;
                    }[];
                    id: number;
                    kind: string;
                    modifierName: {
                        id: number;
                        name: string;
                        nameLocations: string[];
                        nodeType: string;
                        referencedDeclaration: number;
                        src: string;
                    };
                    nodeType: string;
                    src: string;
                }[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    commonType: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    leftExpression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    nodeType: string;
                                    operator: string;
                                    rightExpression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            expression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                baseType: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        id: number;
                        initialValue: {
                            arguments: ({
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                name?: undefined;
                                nodeType: string;
                                overloadedDeclarations?: undefined;
                                referencedDeclaration?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            } | {
                                expression?: undefined;
                                id: number;
                                isConstant?: undefined;
                                isLValue?: undefined;
                                isPure?: undefined;
                                lValueRequested?: undefined;
                                memberLocation?: undefined;
                                memberName?: undefined;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind?: undefined;
                            lValueRequested: boolean;
                            leftHandSide: {
                                baseExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                indexExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initialValue?: undefined;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            expression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        body: {
                            id: number;
                            nodeType: string;
                            src: string;
                            statements: ({
                                assignments: number[];
                                declarations: {
                                    constant: boolean;
                                    id: number;
                                    mutability: string;
                                    name: string;
                                    nameLocation: string;
                                    nodeType: string;
                                    scope: number;
                                    src: string;
                                    stateVariable: boolean;
                                    storageLocation: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    typeName: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    visibility: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                initialValue: {
                                    baseExpression: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    indexExpression: {
                                        commonType: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        leftExpression: {
                                            expression: {
                                                baseExpression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                id: number;
                                                indexExpression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                isConstant: boolean;
                                                isLValue: boolean;
                                                isPure: boolean;
                                                lValueRequested: boolean;
                                                nodeType: string;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            memberLocation: string;
                                            memberName: string;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        nodeType: string;
                                        operator: string;
                                        rightExpression: {
                                            hexValue: string;
                                            id: number;
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            kind: string;
                                            lValueRequested: boolean;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                            value: string;
                                        };
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            baseExpression: {
                                                id: number;
                                                name: string;
                                                nodeType: string;
                                                overloadedDeclarations: never[];
                                                referencedDeclaration: number;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            id: number;
                                            indexExpression: {
                                                expression: {
                                                    id: number;
                                                    name: string;
                                                    nodeType: string;
                                                    overloadedDeclarations: never[];
                                                    referencedDeclaration: number;
                                                    src: string;
                                                    typeDescriptions: {
                                                        typeIdentifier: string;
                                                        typeString: string;
                                                    };
                                                };
                                                id: number;
                                                isConstant: boolean;
                                                isLValue: boolean;
                                                isPure: boolean;
                                                lValueRequested: boolean;
                                                memberLocation: string;
                                                memberName: string;
                                                nodeType: string;
                                                src: string;
                                                typeDescriptions: {
                                                    typeIdentifier: string;
                                                    typeString: string;
                                                };
                                            };
                                            isConstant: boolean;
                                            isLValue: boolean;
                                            isPure: boolean;
                                            lValueRequested: boolean;
                                            nodeType: string;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration?: undefined;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    }[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: number[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                        };
                        condition: {
                            commonType: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        expression?: undefined;
                        id: number;
                        initializationExpression: {
                            assignments: number[];
                            declarations: {
                                constant: boolean;
                                id: number;
                                mutability: string;
                                name: string;
                                nameLocation: string;
                                nodeType: string;
                                scope: number;
                                src: string;
                                stateVariable: boolean;
                                storageLocation: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                visibility: string;
                            }[];
                            id: number;
                            initialValue: {
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        loopExpression: {
                            expression: {
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                operator: string;
                                prefix: boolean;
                                src: string;
                                subExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        assignments?: undefined;
                        body?: undefined;
                        condition?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    hexValue: string;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    value: string;
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            name?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            overloadedDeclarations?: undefined;
                            referencedDeclaration?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        body?: undefined;
                        condition?: undefined;
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                baseType: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue: {
                            arguments: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            }[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    baseType: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments: number[];
                        body?: undefined;
                        condition?: undefined;
                        declarations: {
                            constant: boolean;
                            id: number;
                            mutability: string;
                            name: string;
                            nameLocation: string;
                            nodeType: string;
                            scope: number;
                            src: string;
                            stateVariable: boolean;
                            storageLocation: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            typeName: {
                                id: number;
                                name: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            visibility: string;
                        }[];
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue: string;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value: string;
                        };
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        body: {
                            id: number;
                            nodeType: string;
                            src: string;
                            statements: ({
                                assignments: number[];
                                declarations: {
                                    constant: boolean;
                                    id: number;
                                    mutability: string;
                                    name: string;
                                    nameLocation: string;
                                    nodeType: string;
                                    scope: number;
                                    src: string;
                                    stateVariable: boolean;
                                    storageLocation: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                    typeName: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    visibility: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                initialValue: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        nodeType: string;
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: ({
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration?: undefined;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    } | {
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    })[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        expression?: undefined;
                                        id: number;
                                        isConstant?: undefined;
                                        isLValue?: undefined;
                                        isPure?: undefined;
                                        lValueRequested?: undefined;
                                        memberLocation?: undefined;
                                        memberName?: undefined;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    leftHandSide?: undefined;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    operator?: undefined;
                                    rightHandSide?: undefined;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments: never[];
                                    expression: {
                                        argumentTypes: never[];
                                        expression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        memberLocation: string;
                                        memberName: string;
                                        name?: undefined;
                                        nodeType: string;
                                        overloadedDeclarations?: undefined;
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    leftHandSide?: undefined;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    operator?: undefined;
                                    rightHandSide?: undefined;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                assignments?: undefined;
                                declarations?: undefined;
                                expression: {
                                    arguments?: undefined;
                                    expression?: undefined;
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind?: undefined;
                                    lValueRequested: boolean;
                                    leftHandSide: {
                                        baseExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        id: number;
                                        indexExpression: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            overloadedDeclarations: never[];
                                            referencedDeclaration: number;
                                            src: string;
                                            typeDescriptions: {
                                                typeIdentifier: string;
                                                typeString: string;
                                            };
                                        };
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    nameLocations?: undefined;
                                    names?: undefined;
                                    nodeType: string;
                                    operator: string;
                                    rightHandSide: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    src: string;
                                    tryCall?: undefined;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                initialValue?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                        };
                        condition: {
                            commonType: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightExpression: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        declarations?: undefined;
                        expression?: undefined;
                        functionReturnParameters?: undefined;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression: {
                            assignments: number[];
                            declarations: {
                                constant: boolean;
                                id: number;
                                mutability: string;
                                name: string;
                                nameLocation: string;
                                nodeType: string;
                                scope: number;
                                src: string;
                                stateVariable: boolean;
                                storageLocation: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                typeName: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                visibility: string;
                            }[];
                            id: number;
                            initialValue: {
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        loopExpression: {
                            expression: {
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                nodeType: string;
                                operator: string;
                                prefix: boolean;
                                src: string;
                                subExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    } | {
                        assignments?: undefined;
                        body?: undefined;
                        condition?: undefined;
                        declarations?: undefined;
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            id: number;
                            isConstant?: undefined;
                            isLValue?: undefined;
                            isPure?: undefined;
                            kind?: undefined;
                            lValueRequested?: undefined;
                            name: string;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            overloadedDeclarations: never[];
                            referencedDeclaration: number;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters: number;
                        id: number;
                        initialValue?: undefined;
                        initializationExpression?: undefined;
                        loopExpression?: undefined;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                global?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                libraryName?: undefined;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            baseType: {
                                id: number;
                                name: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            id: number;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                value?: undefined;
                virtual: boolean;
                visibility: string;
            })[];
            scope: number;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors: never[];
        } | {
            absolutePath?: undefined;
            abstract: boolean;
            baseContracts: never[];
            canonicalName: string;
            contractDependencies: never[];
            contractKind: string;
            file?: undefined;
            fullyImplemented: boolean;
            id: number;
            linearizedBaseContracts: number[];
            literals?: undefined;
            name: string;
            nameLocation: string;
            nodeType: string;
            nodes: ({
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    name: string;
                    nodeType: string;
                    src: string;
                    stateMutability?: undefined;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body?: undefined;
                constant: boolean;
                functionSelector: string;
                id: number;
                implemented?: undefined;
                kind?: undefined;
                modifiers?: undefined;
                mutability: string;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters?: undefined;
                returnParameters?: undefined;
                scope: number;
                src: string;
                stateMutability?: undefined;
                stateVariable: boolean;
                storageLocation: string;
                typeDescriptions: {
                    typeIdentifier: string;
                    typeString: string;
                };
                typeName: {
                    id: number;
                    name: string;
                    nodeType: string;
                    src: string;
                    stateMutability: string;
                    typeDescriptions: {
                        typeIdentifier: string;
                        typeString: string;
                    };
                };
                virtual?: undefined;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            lValueRequested: boolean;
                            leftHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        id: number;
                        nodeType: string;
                        src: string;
                    }[];
                };
                constant?: undefined;
                functionSelector?: undefined;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: ({
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    } | {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            stateMutability: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    })[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression: {
                            arguments: ({
                                commonType: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                hexValue?: undefined;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind?: undefined;
                                lValueRequested: boolean;
                                leftExpression: {
                                    expression: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    lValueRequested: boolean;
                                    memberLocation: string;
                                    memberName: string;
                                    nodeType: string;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                nodeType: string;
                                operator: string;
                                rightExpression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value?: undefined;
                            } | {
                                commonType?: undefined;
                                hexValue: string;
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                kind: string;
                                lValueRequested: boolean;
                                leftExpression?: undefined;
                                nodeType: string;
                                operator?: undefined;
                                rightExpression?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                                value: string;
                            })[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                expression?: undefined;
                                id: number;
                                isConstant?: undefined;
                                isLValue?: undefined;
                                isPure?: undefined;
                                lValueRequested?: undefined;
                                memberLocation?: undefined;
                                memberName?: undefined;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: number[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments: {
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            }[];
                            expression: {
                                argumentTypes: {
                                    typeIdentifier: string;
                                    typeString: string;
                                }[];
                                expression: {
                                    arguments: {
                                        id: number;
                                        name: string;
                                        nodeType: string;
                                        overloadedDeclarations: never[];
                                        referencedDeclaration: number;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                    }[];
                                    expression: {
                                        argumentTypes: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        }[];
                                        id: number;
                                        isConstant: boolean;
                                        isLValue: boolean;
                                        isPure: boolean;
                                        lValueRequested: boolean;
                                        nodeType: string;
                                        src: string;
                                        typeDescriptions: {
                                            typeIdentifier: string;
                                            typeString: string;
                                        };
                                        typeName: {
                                            id: number;
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                            stateMutability: string;
                                            typeDescriptions: {};
                                        };
                                    };
                                    id: number;
                                    isConstant: boolean;
                                    isLValue: boolean;
                                    isPure: boolean;
                                    kind: string;
                                    lValueRequested: boolean;
                                    nameLocations: never[];
                                    names: never[];
                                    nodeType: string;
                                    src: string;
                                    tryCall: boolean;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                name?: undefined;
                                nodeType: string;
                                overloadedDeclarations?: undefined;
                                referencedDeclaration?: undefined;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations: never[];
                            names: never[];
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall: boolean;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue?: undefined;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind?: undefined;
                            lValueRequested: boolean;
                            leftHandSide: {
                                id: number;
                                name: string;
                                nodeType: string;
                                overloadedDeclarations: never[];
                                referencedDeclaration: number;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator: string;
                            rightHandSide: {
                                expression: {
                                    id: number;
                                    name: string;
                                    nodeType: string;
                                    overloadedDeclarations: never[];
                                    referencedDeclaration: number;
                                    src: string;
                                    typeDescriptions: {
                                        typeIdentifier: string;
                                        typeString: string;
                                    };
                                };
                                id: number;
                                isConstant: boolean;
                                isLValue: boolean;
                                isPure: boolean;
                                lValueRequested: boolean;
                                memberLocation: string;
                                memberName: string;
                                nodeType: string;
                                src: string;
                                typeDescriptions: {
                                    typeIdentifier: string;
                                    typeString: string;
                                };
                            };
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value?: undefined;
                        };
                        functionReturnParameters?: undefined;
                        id: number;
                        nodeType: string;
                        src: string;
                    } | {
                        expression: {
                            arguments?: undefined;
                            expression?: undefined;
                            hexValue: string;
                            id: number;
                            isConstant: boolean;
                            isLValue: boolean;
                            isPure: boolean;
                            kind: string;
                            lValueRequested: boolean;
                            leftHandSide?: undefined;
                            nameLocations?: undefined;
                            names?: undefined;
                            nodeType: string;
                            operator?: undefined;
                            rightHandSide?: undefined;
                            src: string;
                            tryCall?: undefined;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                            value: string;
                        };
                        functionReturnParameters: number;
                        id: number;
                        nodeType: string;
                        src: string;
                    })[];
                };
                constant?: undefined;
                functionSelector: string;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            } | {
                body: {
                    id: number;
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            id: number;
                            name: string;
                            nodeType: string;
                            overloadedDeclarations: never[];
                            referencedDeclaration: number;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        functionReturnParameters: number;
                        id: number;
                        nodeType: string;
                        src: string;
                    }[];
                };
                constant?: undefined;
                functionSelector: string;
                id: number;
                implemented: boolean;
                kind: string;
                modifiers: never[];
                mutability?: undefined;
                name: string;
                nameLocation: string;
                nodeType: string;
                parameters: {
                    id: number;
                    nodeType: string;
                    parameters: never[];
                    src: string;
                };
                returnParameters: {
                    id: number;
                    nodeType: string;
                    parameters: {
                        constant: boolean;
                        id: number;
                        mutability: string;
                        name: string;
                        nameLocation: string;
                        nodeType: string;
                        scope: number;
                        src: string;
                        stateVariable: boolean;
                        storageLocation: string;
                        typeDescriptions: {
                            typeIdentifier: string;
                            typeString: string;
                        };
                        typeName: {
                            id: number;
                            name: string;
                            nodeType: string;
                            src: string;
                            typeDescriptions: {
                                typeIdentifier: string;
                                typeString: string;
                            };
                        };
                        visibility: string;
                    }[];
                    src: string;
                };
                scope: number;
                src: string;
                stateMutability: string;
                stateVariable?: undefined;
                storageLocation?: undefined;
                typeDescriptions?: undefined;
                typeName?: undefined;
                virtual: boolean;
                visibility: string;
            })[];
            scope: number;
            sourceUnit?: undefined;
            src: string;
            symbolAliases?: undefined;
            unitAlias?: undefined;
            usedErrors: never[];
        })[];
        src: string;
    }
    • absolutePath: string
    • exportedSymbols: {
          Address: number[];
          Context: number[];
          Counters: number[];
          ERC165: number[];
          ERC721: number[];
          ERC721URIStorage: number[];
          IERC165: number[];
          IERC4906: number[];
          IERC721: number[];
          IERC721Metadata: number[];
          IERC721Receiver: number[];
          Math: number[];
          Ownable: number[];
          SignedMath: number[];
          Strings: number[];
          Ticket: number[];
          TicketAsset: number[];
      }
      • Address: number[]
      • Context: number[]
      • Counters: number[]
      • ERC165: number[]
      • ERC721: number[]
      • ERC721URIStorage: number[]
      • IERC165: number[]
      • IERC4906: number[]
      • IERC721: number[]
      • IERC721Metadata: number[]
      • IERC721Receiver: number[]
      • Math: number[]
      • Ownable: number[]
      • SignedMath: number[]
      • Strings: number[]
      • Ticket: number[]
      • TicketAsset: number[]
    • id: number
    • license: string
    • nodeType: string
    • nodes: ({
          absolutePath?: undefined;
          abstract?: undefined;
          baseContracts?: undefined;
          canonicalName?: undefined;
          contractDependencies?: undefined;
          contractKind?: undefined;
          file?: undefined;
          fullyImplemented?: undefined;
          id: number;
          linearizedBaseContracts?: undefined;
          literals: string[];
          name?: undefined;
          nameLocation?: undefined;
          nodeType: string;
          nodes?: undefined;
          scope?: undefined;
          sourceUnit?: undefined;
          src: string;
          symbolAliases?: undefined;
          unitAlias?: undefined;
          usedErrors?: undefined;
      } | {
          absolutePath: string;
          abstract?: undefined;
          baseContracts?: undefined;
          canonicalName?: undefined;
          contractDependencies?: undefined;
          contractKind?: undefined;
          file: string;
          fullyImplemented?: undefined;
          id: number;
          linearizedBaseContracts?: undefined;
          literals?: undefined;
          name?: undefined;
          nameLocation: string;
          nodeType: string;
          nodes?: undefined;
          scope: number;
          sourceUnit: number;
          src: string;
          symbolAliases: never[];
          unitAlias: string;
          usedErrors?: undefined;
      } | {
          absolutePath?: undefined;
          abstract: boolean;
          baseContracts: {
              baseName: {
                  id: number;
                  name: string;
                  nameLocations: string[];
                  nodeType: string;
                  referencedDeclaration: number;
                  src: string;
              };
              id: number;
              nodeType: string;
              src: string;
          }[];
          canonicalName: string;
          contractDependencies: never[];
          contractKind: string;
          file?: undefined;
          fullyImplemented: boolean;
          id: number;
          linearizedBaseContracts: number[];
          literals?: undefined;
          name: string;
          nameLocation: string;
          nodeType: string;
          nodes: ({
              body?: undefined;
              constant?: undefined;
              functionSelector?: undefined;
              global: boolean;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              libraryName: {
                  id: number;
                  name: string;
                  nameLocations: string[];
                  nodeType: string;
                  referencedDeclaration: number;
                  src: string;
              };
              modifiers?: undefined;
              mutability?: undefined;
              name?: undefined;
              nameLocation?: undefined;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope?: undefined;
              src: string;
              stateMutability?: undefined;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName: {
                  id: number;
                  keyName?: undefined;
                  keyNameLocation?: undefined;
                  keyType?: undefined;
                  name?: undefined;
                  nodeType: string;
                  pathNode: {
                      id: number;
                      name: string;
                      nameLocations: string[];
                      nodeType: string;
                      referencedDeclaration: number;
                      src: string;
                  };
                  referencedDeclaration: number;
                  src: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
                  valueName?: undefined;
                  valueNameLocation?: undefined;
                  valueType?: undefined;
              };
              value?: undefined;
              virtual?: undefined;
              visibility?: undefined;
          } | {
              body?: undefined;
              constant: boolean;
              functionSelector?: undefined;
              global?: undefined;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              libraryName?: undefined;
              modifiers?: undefined;
              mutability: string;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope: number;
              src: string;
              stateMutability?: undefined;
              stateVariable: boolean;
              storageLocation: string;
              typeDescriptions: {
                  typeIdentifier: string;
                  typeString: string;
              };
              typeName: {
                  id: number;
                  keyName?: undefined;
                  keyNameLocation?: undefined;
                  keyType?: undefined;
                  name?: undefined;
                  nodeType: string;
                  pathNode: {
                      id: number;
                      name: string;
                      nameLocations: string[];
                      nodeType: string;
                      referencedDeclaration: number;
                      src: string;
                  };
                  referencedDeclaration: number;
                  src: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
                  valueName?: undefined;
                  valueNameLocation?: undefined;
                  valueType?: undefined;
              };
              value?: undefined;
              virtual?: undefined;
              visibility: string;
          } | {
              body?: undefined;
              constant: boolean;
              functionSelector: string;
              global?: undefined;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              libraryName?: undefined;
              modifiers?: undefined;
              mutability: string;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope: number;
              src: string;
              stateMutability?: undefined;
              stateVariable: boolean;
              storageLocation: string;
              typeDescriptions: {
                  typeIdentifier: string;
                  typeString: string;
              };
              typeName: {
                  id: number;
                  keyName?: undefined;
                  keyNameLocation?: undefined;
                  keyType?: undefined;
                  name: string;
                  nodeType: string;
                  pathNode?: undefined;
                  referencedDeclaration?: undefined;
                  src: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
                  valueName?: undefined;
                  valueNameLocation?: undefined;
                  valueType?: undefined;
              };
              value: {
                  hexValue: string;
                  id: number;
                  isConstant: boolean;
                  isLValue: boolean;
                  isPure: boolean;
                  kind: string;
                  lValueRequested: boolean;
                  nodeType: string;
                  src: string;
                  subdenomination: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
                  value: string;
              };
              virtual?: undefined;
              visibility: string;
          } | {
              body?: undefined;
              constant: boolean;
              functionSelector: string;
              global?: undefined;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              libraryName?: undefined;
              modifiers?: undefined;
              mutability: string;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope: number;
              src: string;
              stateMutability?: undefined;
              stateVariable: boolean;
              storageLocation: string;
              typeDescriptions: {
                  typeIdentifier: string;
                  typeString: string;
              };
              typeName: {
                  id: number;
                  keyName: string;
                  keyNameLocation: string;
                  keyType: {
                      id: number;
                      name: string;
                      nodeType: string;
                      src: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                  };
                  name?: undefined;
                  nodeType: string;
                  pathNode?: undefined;
                  referencedDeclaration?: undefined;
                  src: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
                  valueName: string;
                  valueNameLocation: string;
                  valueType: {
                      baseType: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      nodeType: string;
                      src: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                  };
              };
              value?: undefined;
              virtual?: undefined;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: never[];
              };
              constant?: undefined;
              functionSelector?: undefined;
              global?: undefined;
              id: number;
              implemented: boolean;
              kind: string;
              libraryName?: undefined;
              modifiers: {
                  arguments: {
                      hexValue: string;
                      id: number;
                      isConstant: boolean;
                      isLValue: boolean;
                      isPure: boolean;
                      kind: string;
                      lValueRequested: boolean;
                      nodeType: string;
                      src: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      value: string;
                  }[];
                  id: number;
                  kind: string;
                  modifierName: {
                      id: number;
                      name: string;
                      nameLocations: string[];
                      nodeType: string;
                      referencedDeclaration: number;
                      src: string;
                  };
                  nodeType: string;
                  src: string;
              }[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              value?: undefined;
              virtual: boolean;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: ({
                      assignments?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  expression: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  memberLocation: string;
                                  memberName: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  commonType: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  leftExpression: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  nodeType: string;
                                  operator: string;
                                  rightExpression: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      initialValue?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  hexValue: string;
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  value: string;
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      initialValue?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  expression: {
                                      baseExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      indexExpression: {
                                          expression: {
                                              id: number;
                                              name: string;
                                              nodeType: string;
                                              overloadedDeclarations: never[];
                                              referencedDeclaration: number;
                                              src: string;
                                              typeDescriptions: {
                                                  typeIdentifier: string;
                                                  typeString: string;
                                              };
                                          };
                                          id: number;
                                          isConstant: boolean;
                                          isLValue: boolean;
                                          isPure: boolean;
                                          lValueRequested: boolean;
                                          memberLocation: string;
                                          memberName: string;
                                          nodeType: string;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  memberLocation: string;
                                  memberName: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  hexValue: string;
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  value: string;
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      initialValue?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments: number[];
                      declarations: {
                          constant: boolean;
                          id: number;
                          mutability: string;
                          name: string;
                          nameLocation: string;
                          nodeType: string;
                          scope: number;
                          src: string;
                          stateVariable: boolean;
                          storageLocation: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          typeName: {
                              baseType: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          visibility: string;
                      }[];
                      expression?: undefined;
                      id: number;
                      initialValue: {
                          arguments: ({
                              expression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              memberLocation: string;
                              memberName: string;
                              name?: undefined;
                              nodeType: string;
                              overloadedDeclarations?: undefined;
                              referencedDeclaration?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          } | {
                              expression?: undefined;
                              id: number;
                              isConstant?: undefined;
                              isLValue?: undefined;
                              isPure?: undefined;
                              lValueRequested?: undefined;
                              memberLocation?: undefined;
                              memberName?: undefined;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      nodeType: string;
                      src: string;
                  } | {
                      assignments?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments?: undefined;
                          expression?: undefined;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind?: undefined;
                          lValueRequested: boolean;
                          leftHandSide: {
                              baseExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              indexExpression: {
                                  expression: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  memberLocation: string;
                                  memberName: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          nameLocations?: undefined;
                          names?: undefined;
                          nodeType: string;
                          operator: string;
                          rightHandSide: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          src: string;
                          tryCall?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      initialValue?: undefined;
                      nodeType: string;
                      src: string;
                  })[];
              };
              constant?: undefined;
              functionSelector: string;
              global?: undefined;
              id: number;
              implemented: boolean;
              kind: string;
              libraryName?: undefined;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: ({
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  } | {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  })[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              value?: undefined;
              virtual: boolean;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: ({
                      body?: undefined;
                      condition?: undefined;
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  expression: {
                                      baseExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      indexExpression: {
                                          expression: {
                                              id: number;
                                              name: string;
                                              nodeType: string;
                                              overloadedDeclarations: never[];
                                              referencedDeclaration: number;
                                              src: string;
                                              typeDescriptions: {
                                                  typeIdentifier: string;
                                                  typeString: string;
                                              };
                                          };
                                          id: number;
                                          isConstant: boolean;
                                          isLValue: boolean;
                                          isPure: boolean;
                                          lValueRequested: boolean;
                                          memberLocation: string;
                                          memberName: string;
                                          nodeType: string;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  memberLocation: string;
                                  memberName: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      initializationExpression?: undefined;
                      loopExpression?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      body: {
                          id: number;
                          nodeType: string;
                          src: string;
                          statements: ({
                              assignments: number[];
                              declarations: {
                                  constant: boolean;
                                  id: number;
                                  mutability: string;
                                  name: string;
                                  nameLocation: string;
                                  nodeType: string;
                                  scope: number;
                                  src: string;
                                  stateVariable: boolean;
                                  storageLocation: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  typeName: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  visibility: string;
                              }[];
                              expression?: undefined;
                              id: number;
                              initialValue: {
                                  baseExpression: {
                                      baseExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      indexExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  indexExpression: {
                                      commonType: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      leftExpression: {
                                          expression: {
                                              baseExpression: {
                                                  id: number;
                                                  name: string;
                                                  nodeType: string;
                                                  overloadedDeclarations: never[];
                                                  referencedDeclaration: number;
                                                  src: string;
                                                  typeDescriptions: {
                                                      typeIdentifier: string;
                                                      typeString: string;
                                                  };
                                              };
                                              id: number;
                                              indexExpression: {
                                                  id: number;
                                                  name: string;
                                                  nodeType: string;
                                                  overloadedDeclarations: never[];
                                                  referencedDeclaration: number;
                                                  src: string;
                                                  typeDescriptions: {
                                                      typeIdentifier: string;
                                                      typeString: string;
                                                  };
                                              };
                                              isConstant: boolean;
                                              isLValue: boolean;
                                              isPure: boolean;
                                              lValueRequested: boolean;
                                              nodeType: string;
                                              src: string;
                                              typeDescriptions: {
                                                  typeIdentifier: string;
                                                  typeString: string;
                                              };
                                          };
                                          id: number;
                                          isConstant: boolean;
                                          isLValue: boolean;
                                          isPure: boolean;
                                          lValueRequested: boolean;
                                          memberLocation: string;
                                          memberName: string;
                                          nodeType: string;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      nodeType: string;
                                      operator: string;
                                      rightExpression: {
                                          hexValue: string;
                                          id: number;
                                          isConstant: boolean;
                                          isLValue: boolean;
                                          isPure: boolean;
                                          kind: string;
                                          lValueRequested: boolean;
                                          nodeType: string;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                          value: string;
                                      };
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              src: string;
                          } | {
                              assignments?: undefined;
                              declarations?: undefined;
                              expression: {
                                  arguments: never[];
                                  expression: {
                                      argumentTypes: never[];
                                      expression: {
                                          baseExpression: {
                                              id: number;
                                              name: string;
                                              nodeType: string;
                                              overloadedDeclarations: never[];
                                              referencedDeclaration: number;
                                              src: string;
                                              typeDescriptions: {
                                                  typeIdentifier: string;
                                                  typeString: string;
                                              };
                                          };
                                          id: number;
                                          indexExpression: {
                                              expression: {
                                                  id: number;
                                                  name: string;
                                                  nodeType: string;
                                                  overloadedDeclarations: never[];
                                                  referencedDeclaration: number;
                                                  src: string;
                                                  typeDescriptions: {
                                                      typeIdentifier: string;
                                                      typeString: string;
                                                  };
                                              };
                                              id: number;
                                              isConstant: boolean;
                                              isLValue: boolean;
                                              isPure: boolean;
                                              lValueRequested: boolean;
                                              memberLocation: string;
                                              memberName: string;
                                              nodeType: string;
                                              src: string;
                                              typeDescriptions: {
                                                  typeIdentifier: string;
                                                  typeString: string;
                                              };
                                          };
                                          isConstant: boolean;
                                          isLValue: boolean;
                                          isPure: boolean;
                                          lValueRequested: boolean;
                                          nodeType: string;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      memberLocation: string;
                                      memberName: string;
                                      name?: undefined;
                                      nodeType: string;
                                      overloadedDeclarations?: undefined;
                                      referencedDeclaration?: undefined;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              initialValue?: undefined;
                              nodeType: string;
                              src: string;
                          } | {
                              assignments?: undefined;
                              declarations?: undefined;
                              expression: {
                                  arguments: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  }[];
                                  expression: {
                                      argumentTypes: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      }[];
                                      expression?: undefined;
                                      id: number;
                                      isConstant?: undefined;
                                      isLValue?: undefined;
                                      isPure?: undefined;
                                      lValueRequested?: undefined;
                                      memberLocation?: undefined;
                                      memberName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: number[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              initialValue?: undefined;
                              nodeType: string;
                              src: string;
                          })[];
                      };
                      condition: {
                          commonType: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          lValueRequested: boolean;
                          leftExpression: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          nodeType: string;
                          operator: string;
                          rightExpression: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      expression?: undefined;
                      id: number;
                      initializationExpression: {
                          assignments: number[];
                          declarations: {
                              constant: boolean;
                              id: number;
                              mutability: string;
                              name: string;
                              nameLocation: string;
                              nodeType: string;
                              scope: number;
                              src: string;
                              stateVariable: boolean;
                              storageLocation: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              typeName: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              visibility: string;
                          }[];
                          id: number;
                          initialValue: {
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          };
                          nodeType: string;
                          src: string;
                      };
                      loopExpression: {
                          expression: {
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              nodeType: string;
                              operator: string;
                              prefix: boolean;
                              src: string;
                              subExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          nodeType: string;
                          src: string;
                      };
                      nodeType: string;
                      src: string;
                  })[];
              };
              constant?: undefined;
              functionSelector: string;
              global?: undefined;
              id: number;
              implemented: boolean;
              kind: string;
              libraryName?: undefined;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: ({
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  } | {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  })[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              value?: undefined;
              virtual: boolean;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: ({
                      assignments?: undefined;
                      body?: undefined;
                      condition?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  hexValue: string;
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  value: string;
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          name?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          overloadedDeclarations?: undefined;
                          referencedDeclaration?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      functionReturnParameters?: undefined;
                      id: number;
                      initialValue?: undefined;
                      initializationExpression?: undefined;
                      loopExpression?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments: number[];
                      body?: undefined;
                      condition?: undefined;
                      declarations: {
                          constant: boolean;
                          id: number;
                          mutability: string;
                          name: string;
                          nameLocation: string;
                          nodeType: string;
                          scope: number;
                          src: string;
                          stateVariable: boolean;
                          storageLocation: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          typeName: {
                              baseType: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          visibility: string;
                      }[];
                      expression?: undefined;
                      functionReturnParameters?: undefined;
                      id: number;
                      initialValue: {
                          arguments: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          }[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              typeName: {
                                  baseType: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                          };
                          hexValue?: undefined;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value?: undefined;
                      };
                      initializationExpression?: undefined;
                      loopExpression?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments: number[];
                      body?: undefined;
                      condition?: undefined;
                      declarations: {
                          constant: boolean;
                          id: number;
                          mutability: string;
                          name: string;
                          nameLocation: string;
                          nodeType: string;
                          scope: number;
                          src: string;
                          stateVariable: boolean;
                          storageLocation: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          typeName: {
                              id: number;
                              name: string;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          visibility: string;
                      }[];
                      expression?: undefined;
                      functionReturnParameters?: undefined;
                      id: number;
                      initialValue: {
                          arguments?: undefined;
                          expression?: undefined;
                          hexValue: string;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          nameLocations?: undefined;
                          names?: undefined;
                          nodeType: string;
                          src: string;
                          tryCall?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value: string;
                      };
                      initializationExpression?: undefined;
                      loopExpression?: undefined;
                      nodeType: string;
                      src: string;
                  } | {
                      assignments?: undefined;
                      body: {
                          id: number;
                          nodeType: string;
                          src: string;
                          statements: ({
                              assignments: number[];
                              declarations: {
                                  constant: boolean;
                                  id: number;
                                  mutability: string;
                                  name: string;
                                  nameLocation: string;
                                  nodeType: string;
                                  scope: number;
                                  src: string;
                                  stateVariable: boolean;
                                  storageLocation: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                                  typeName: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  visibility: string;
                              }[];
                              expression?: undefined;
                              id: number;
                              initialValue: {
                                  arguments: never[];
                                  expression: {
                                      argumentTypes: never[];
                                      expression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      memberLocation: string;
                                      memberName: string;
                                      nodeType: string;
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              src: string;
                          } | {
                              assignments?: undefined;
                              declarations?: undefined;
                              expression: {
                                  arguments: ({
                                      expression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      memberLocation: string;
                                      memberName: string;
                                      name?: undefined;
                                      nodeType: string;
                                      overloadedDeclarations?: undefined;
                                      referencedDeclaration?: undefined;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  } | {
                                      expression?: undefined;
                                      id: number;
                                      isConstant?: undefined;
                                      isLValue?: undefined;
                                      isPure?: undefined;
                                      lValueRequested?: undefined;
                                      memberLocation?: undefined;
                                      memberName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  })[];
                                  expression: {
                                      argumentTypes: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      }[];
                                      expression?: undefined;
                                      id: number;
                                      isConstant?: undefined;
                                      isLValue?: undefined;
                                      isPure?: undefined;
                                      lValueRequested?: undefined;
                                      memberLocation?: undefined;
                                      memberName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  leftHandSide?: undefined;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  operator?: undefined;
                                  rightHandSide?: undefined;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              initialValue?: undefined;
                              nodeType: string;
                              src: string;
                          } | {
                              assignments?: undefined;
                              declarations?: undefined;
                              expression: {
                                  arguments: never[];
                                  expression: {
                                      argumentTypes: never[];
                                      expression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      memberLocation: string;
                                      memberName: string;
                                      name?: undefined;
                                      nodeType: string;
                                      overloadedDeclarations?: undefined;
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  leftHandSide?: undefined;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  operator?: undefined;
                                  rightHandSide?: undefined;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              initialValue?: undefined;
                              nodeType: string;
                              src: string;
                          } | {
                              assignments?: undefined;
                              declarations?: undefined;
                              expression: {
                                  arguments?: undefined;
                                  expression?: undefined;
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind?: undefined;
                                  lValueRequested: boolean;
                                  leftHandSide: {
                                      baseExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      id: number;
                                      indexExpression: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          overloadedDeclarations: never[];
                                          referencedDeclaration: number;
                                          src: string;
                                          typeDescriptions: {
                                              typeIdentifier: string;
                                              typeString: string;
                                          };
                                      };
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  nameLocations?: undefined;
                                  names?: undefined;
                                  nodeType: string;
                                  operator: string;
                                  rightHandSide: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  src: string;
                                  tryCall?: undefined;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              initialValue?: undefined;
                              nodeType: string;
                              src: string;
                          })[];
                      };
                      condition: {
                          commonType: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          lValueRequested: boolean;
                          leftExpression: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          nodeType: string;
                          operator: string;
                          rightExpression: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      declarations?: undefined;
                      expression?: undefined;
                      functionReturnParameters?: undefined;
                      id: number;
                      initialValue?: undefined;
                      initializationExpression: {
                          assignments: number[];
                          declarations: {
                              constant: boolean;
                              id: number;
                              mutability: string;
                              name: string;
                              nameLocation: string;
                              nodeType: string;
                              scope: number;
                              src: string;
                              stateVariable: boolean;
                              storageLocation: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              typeName: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              visibility: string;
                          }[];
                          id: number;
                          initialValue: {
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          };
                          nodeType: string;
                          src: string;
                      };
                      loopExpression: {
                          expression: {
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              nodeType: string;
                              operator: string;
                              prefix: boolean;
                              src: string;
                              subExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          nodeType: string;
                          src: string;
                      };
                      nodeType: string;
                      src: string;
                  } | {
                      assignments?: undefined;
                      body?: undefined;
                      condition?: undefined;
                      declarations?: undefined;
                      expression: {
                          arguments?: undefined;
                          expression?: undefined;
                          id: number;
                          isConstant?: undefined;
                          isLValue?: undefined;
                          isPure?: undefined;
                          kind?: undefined;
                          lValueRequested?: undefined;
                          name: string;
                          nameLocations?: undefined;
                          names?: undefined;
                          nodeType: string;
                          overloadedDeclarations: never[];
                          referencedDeclaration: number;
                          src: string;
                          tryCall?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      functionReturnParameters: number;
                      id: number;
                      initialValue?: undefined;
                      initializationExpression?: undefined;
                      loopExpression?: undefined;
                      nodeType: string;
                      src: string;
                  })[];
              };
              constant?: undefined;
              functionSelector?: undefined;
              global?: undefined;
              id: number;
              implemented: boolean;
              kind: string;
              libraryName?: undefined;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: ({
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  } | {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  })[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          baseType: {
                              id: number;
                              name: string;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          id: number;
                          nodeType: string;
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  }[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              value?: undefined;
              virtual: boolean;
              visibility: string;
          })[];
          scope: number;
          sourceUnit?: undefined;
          src: string;
          symbolAliases?: undefined;
          unitAlias?: undefined;
          usedErrors: never[];
      } | {
          absolutePath?: undefined;
          abstract: boolean;
          baseContracts: never[];
          canonicalName: string;
          contractDependencies: never[];
          contractKind: string;
          file?: undefined;
          fullyImplemented: boolean;
          id: number;
          linearizedBaseContracts: number[];
          literals?: undefined;
          name: string;
          nameLocation: string;
          nodeType: string;
          nodes: ({
              body?: undefined;
              constant: boolean;
              functionSelector: string;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              modifiers?: undefined;
              mutability: string;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope: number;
              src: string;
              stateMutability?: undefined;
              stateVariable: boolean;
              storageLocation: string;
              typeDescriptions: {
                  typeIdentifier: string;
                  typeString: string;
              };
              typeName: {
                  id: number;
                  name: string;
                  nodeType: string;
                  src: string;
                  stateMutability?: undefined;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
              };
              virtual?: undefined;
              visibility: string;
          } | {
              body?: undefined;
              constant: boolean;
              functionSelector: string;
              id: number;
              implemented?: undefined;
              kind?: undefined;
              modifiers?: undefined;
              mutability: string;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters?: undefined;
              returnParameters?: undefined;
              scope: number;
              src: string;
              stateMutability?: undefined;
              stateVariable: boolean;
              storageLocation: string;
              typeDescriptions: {
                  typeIdentifier: string;
                  typeString: string;
              };
              typeName: {
                  id: number;
                  name: string;
                  nodeType: string;
                  src: string;
                  stateMutability: string;
                  typeDescriptions: {
                      typeIdentifier: string;
                      typeString: string;
                  };
              };
              virtual?: undefined;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: {
                      expression: {
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          lValueRequested: boolean;
                          leftHandSide: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          nodeType: string;
                          operator: string;
                          rightHandSide: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      id: number;
                      nodeType: string;
                      src: string;
                  }[];
              };
              constant?: undefined;
              functionSelector?: undefined;
              id: number;
              implemented: boolean;
              kind: string;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: ({
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  } | {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          stateMutability: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  })[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              virtual: boolean;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: ({
                      expression: {
                          arguments: ({
                              commonType: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              hexValue?: undefined;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind?: undefined;
                              lValueRequested: boolean;
                              leftExpression: {
                                  expression: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  lValueRequested: boolean;
                                  memberLocation: string;
                                  memberName: string;
                                  nodeType: string;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              nodeType: string;
                              operator: string;
                              rightExpression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value?: undefined;
                          } | {
                              commonType?: undefined;
                              hexValue: string;
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              kind: string;
                              lValueRequested: boolean;
                              leftExpression?: undefined;
                              nodeType: string;
                              operator?: undefined;
                              rightExpression?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                              value: string;
                          })[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              expression?: undefined;
                              id: number;
                              isConstant?: undefined;
                              isLValue?: undefined;
                              isPure?: undefined;
                              lValueRequested?: undefined;
                              memberLocation?: undefined;
                              memberName?: undefined;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: number[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          hexValue?: undefined;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value?: undefined;
                      };
                      functionReturnParameters?: undefined;
                      id: number;
                      nodeType: string;
                      src: string;
                  } | {
                      expression: {
                          arguments: {
                              expression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              memberLocation: string;
                              memberName: string;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          }[];
                          expression: {
                              argumentTypes: {
                                  typeIdentifier: string;
                                  typeString: string;
                              }[];
                              expression: {
                                  arguments: {
                                      id: number;
                                      name: string;
                                      nodeType: string;
                                      overloadedDeclarations: never[];
                                      referencedDeclaration: number;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                  }[];
                                  expression: {
                                      argumentTypes: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      }[];
                                      id: number;
                                      isConstant: boolean;
                                      isLValue: boolean;
                                      isPure: boolean;
                                      lValueRequested: boolean;
                                      nodeType: string;
                                      src: string;
                                      typeDescriptions: {
                                          typeIdentifier: string;
                                          typeString: string;
                                      };
                                      typeName: {
                                          id: number;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          stateMutability: string;
                                          typeDescriptions: {};
                                      };
                                  };
                                  id: number;
                                  isConstant: boolean;
                                  isLValue: boolean;
                                  isPure: boolean;
                                  kind: string;
                                  lValueRequested: boolean;
                                  nameLocations: never[];
                                  names: never[];
                                  nodeType: string;
                                  src: string;
                                  tryCall: boolean;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              memberLocation: string;
                              memberName: string;
                              name?: undefined;
                              nodeType: string;
                              overloadedDeclarations?: undefined;
                              referencedDeclaration?: undefined;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          hexValue?: undefined;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations: never[];
                          names: never[];
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall: boolean;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value?: undefined;
                      };
                      functionReturnParameters?: undefined;
                      id: number;
                      nodeType: string;
                      src: string;
                  } | {
                      expression: {
                          arguments?: undefined;
                          expression?: undefined;
                          hexValue?: undefined;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind?: undefined;
                          lValueRequested: boolean;
                          leftHandSide: {
                              id: number;
                              name: string;
                              nodeType: string;
                              overloadedDeclarations: never[];
                              referencedDeclaration: number;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          nameLocations?: undefined;
                          names?: undefined;
                          nodeType: string;
                          operator: string;
                          rightHandSide: {
                              expression: {
                                  id: number;
                                  name: string;
                                  nodeType: string;
                                  overloadedDeclarations: never[];
                                  referencedDeclaration: number;
                                  src: string;
                                  typeDescriptions: {
                                      typeIdentifier: string;
                                      typeString: string;
                                  };
                              };
                              id: number;
                              isConstant: boolean;
                              isLValue: boolean;
                              isPure: boolean;
                              lValueRequested: boolean;
                              memberLocation: string;
                              memberName: string;
                              nodeType: string;
                              src: string;
                              typeDescriptions: {
                                  typeIdentifier: string;
                                  typeString: string;
                              };
                          };
                          src: string;
                          tryCall?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value?: undefined;
                      };
                      functionReturnParameters?: undefined;
                      id: number;
                      nodeType: string;
                      src: string;
                  } | {
                      expression: {
                          arguments?: undefined;
                          expression?: undefined;
                          hexValue: string;
                          id: number;
                          isConstant: boolean;
                          isLValue: boolean;
                          isPure: boolean;
                          kind: string;
                          lValueRequested: boolean;
                          leftHandSide?: undefined;
                          nameLocations?: undefined;
                          names?: undefined;
                          nodeType: string;
                          operator?: undefined;
                          rightHandSide?: undefined;
                          src: string;
                          tryCall?: undefined;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                          value: string;
                      };
                      functionReturnParameters: number;
                      id: number;
                      nodeType: string;
                      src: string;
                  })[];
              };
              constant?: undefined;
              functionSelector: string;
              id: number;
              implemented: boolean;
              kind: string;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  }[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              virtual: boolean;
              visibility: string;
          } | {
              body: {
                  id: number;
                  nodeType: string;
                  src: string;
                  statements: {
                      expression: {
                          id: number;
                          name: string;
                          nodeType: string;
                          overloadedDeclarations: never[];
                          referencedDeclaration: number;
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      functionReturnParameters: number;
                      id: number;
                      nodeType: string;
                      src: string;
                  }[];
              };
              constant?: undefined;
              functionSelector: string;
              id: number;
              implemented: boolean;
              kind: string;
              modifiers: never[];
              mutability?: undefined;
              name: string;
              nameLocation: string;
              nodeType: string;
              parameters: {
                  id: number;
                  nodeType: string;
                  parameters: never[];
                  src: string;
              };
              returnParameters: {
                  id: number;
                  nodeType: string;
                  parameters: {
                      constant: boolean;
                      id: number;
                      mutability: string;
                      name: string;
                      nameLocation: string;
                      nodeType: string;
                      scope: number;
                      src: string;
                      stateVariable: boolean;
                      storageLocation: string;
                      typeDescriptions: {
                          typeIdentifier: string;
                          typeString: string;
                      };
                      typeName: {
                          id: number;
                          name: string;
                          nodeType: string;
                          src: string;
                          typeDescriptions: {
                              typeIdentifier: string;
                              typeString: string;
                          };
                      };
                      visibility: string;
                  }[];
                  src: string;
              };
              scope: number;
              src: string;
              stateMutability: string;
              stateVariable?: undefined;
              storageLocation?: undefined;
              typeDescriptions?: undefined;
              typeName?: undefined;
              virtual: boolean;
              visibility: string;
          })[];
          scope: number;
          sourceUnit?: undefined;
          src: string;
          symbolAliases?: undefined;
          unitAlias?: undefined;
          usedErrors: never[];
      })[]
    • src: string
  • bytecode: string
  • compiler: {
        name: string;
        version: string;
    }
    • name: string
    • version: string
  • default: ({
        inputs: {
            internalType: string;
            name: string;
            type: string;
        }[];
        name?: undefined;
        outputs?: undefined;
        stateMutability: string;
        type: string;
    } | {
        inputs: never[];
        name: string;
        outputs: {
            internalType: string;
            name: string;
            type: string;
        }[];
        stateMutability: string;
        type: string;
    })[]
  • deployedBytecode: string
  • deployedGeneratedSources: {
        ast: {
            nodeType: string;
            src: string;
            statements: ({
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        expression?: undefined;
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value: {
                            kind: string;
                            nodeType: string;
                            src: string;
                            type: string;
                            value: string;
                        };
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: ({
                                        arguments: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    } | {
                                        arguments: {
                                            arguments: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            }[];
                                            functionName: {
                                                name: string;
                                                nodeType: string;
                                                src: string;
                                            };
                                            nodeType: string;
                                            src: string;
                                        }[];
                                        functionName: {
                                            name: string;
                                            nodeType: string;
                                            src: string;
                                        };
                                        nodeType: string;
                                        src: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        expression?: undefined;
                        nodeType: string;
                        post: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        pre: {
                            nodeType: string;
                            src: string;
                            statements: never[];
                        };
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        expression: {
                            arguments: ({
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        post?: undefined;
                        pre?: undefined;
                        src: string;
                        value?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        expression: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        expression?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        nodeType: string;
                        src: string;
                        value: {
                            name: string;
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: {
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters?: undefined;
                returnVariables?: undefined;
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: ({
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames: {
                            name: string;
                            nodeType: string;
                            src: string;
                        }[];
                        variables?: undefined;
                    } | {
                        body?: undefined;
                        condition?: undefined;
                        nodeType: string;
                        src: string;
                        value: {
                            arguments: ({
                                kind?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                kind: string;
                                name?: undefined;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        variableNames?: undefined;
                        variables: {
                            name: string;
                            nodeType: string;
                            src: string;
                            type: string;
                        }[];
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                nodeType: string;
                                src: string;
                                value: {
                                    arguments: ({
                                        kind?: undefined;
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                        type?: undefined;
                                        value?: undefined;
                                    } | {
                                        kind: string;
                                        name?: undefined;
                                        nodeType: string;
                                        src: string;
                                        type: string;
                                        value: string;
                                    })[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                variableNames: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                }[];
                            }[];
                        };
                        condition: {
                            arguments: {
                                name: string;
                                nodeType: string;
                                src: string;
                            }[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    } | {
                        body: {
                            nodeType: string;
                            src: string;
                            statements: {
                                expression: {
                                    arguments: never[];
                                    functionName: {
                                        name: string;
                                        nodeType: string;
                                        src: string;
                                    };
                                    nodeType: string;
                                    src: string;
                                };
                                nodeType: string;
                                src: string;
                            }[];
                        };
                        condition: {
                            arguments: ({
                                arguments?: undefined;
                                functionName?: undefined;
                                name: string;
                                nodeType: string;
                                src: string;
                            } | {
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                name?: undefined;
                                nodeType: string;
                                src: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                        value?: undefined;
                        variableNames?: undefined;
                        variables?: undefined;
                    })[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                src: string;
            } | {
                body: {
                    nodeType: string;
                    src: string;
                    statements: {
                        expression: {
                            arguments: ({
                                arguments: ({
                                    kind?: undefined;
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                    type?: undefined;
                                    value?: undefined;
                                } | {
                                    kind: string;
                                    name?: undefined;
                                    nodeType: string;
                                    src: string;
                                    type: string;
                                    value: string;
                                })[];
                                functionName: {
                                    name: string;
                                    nodeType: string;
                                    src: string;
                                };
                                hexValue?: undefined;
                                kind?: undefined;
                                nodeType: string;
                                src: string;
                                type?: undefined;
                                value?: undefined;
                            } | {
                                arguments?: undefined;
                                functionName?: undefined;
                                hexValue: string;
                                kind: string;
                                nodeType: string;
                                src: string;
                                type: string;
                                value: string;
                            })[];
                            functionName: {
                                name: string;
                                nodeType: string;
                                src: string;
                            };
                            nodeType: string;
                            src: string;
                        };
                        nodeType: string;
                        src: string;
                    }[];
                };
                name: string;
                nodeType: string;
                parameters: {
                    name: string;
                    nodeType: string;
                    src: string;
                    type: string;
                }[];
                returnVariables?: undefined;
                src: string;
            })[];
        };
        contents: string;
        id: number;
        language: string;
        name: string;
    }[]
  • deployedSourceMap: string
  • devdoc: {
        kind: string;
        methods: {};
        version: number;
    }
    • kind: string
    • methods: {}
      • version: number
    • generatedSources: {
          ast: {
              nodeType: string;
              src: string;
              statements: ({
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters?: undefined;
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          expression: {
                              arguments: {
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters?: undefined;
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: {
                                  arguments: ({
                                      kind?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type?: undefined;
                                      value?: undefined;
                                  } | {
                                      kind: string;
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                      value: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          expression: {
                              arguments: ({
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              } | {
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          post?: undefined;
                          pre?: undefined;
                          src: string;
                          value: {
                              kind: string;
                              nodeType: string;
                              src: string;
                              type: string;
                              value: string;
                          };
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: ({
                                          arguments: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          }[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      } | {
                                          arguments: {
                                              arguments: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                              functionName: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              nodeType: string;
                                              src: string;
                                          }[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          expression?: undefined;
                          nodeType: string;
                          post: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  nodeType: string;
                                  src: string;
                                  value: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  variableNames: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                              }[];
                          };
                          pre: {
                              nodeType: string;
                              src: string;
                              statements: never[];
                          };
                          src: string;
                          value?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          expression: {
                              arguments: ({
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  kind?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          post?: undefined;
                          pre?: undefined;
                          src: string;
                          value?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          expression: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: ({
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: {
                                  arguments: ({
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                  } | {
                                      arguments?: undefined;
                                      functionName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  arguments: ({
                                      kind?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type?: undefined;
                                      value?: undefined;
                                  } | {
                                      kind: string;
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                      value: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: {
                                          kind: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: {
                                  arguments: ({
                                      arguments?: undefined;
                                      functionName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  } | {
                                      arguments: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      } | {
                          expression: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: ({
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  kind?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          statements?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          statements: ({
                              body?: undefined;
                              condition?: undefined;
                              nodeType: string;
                              src: string;
                              value: {
                                  arguments: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              };
                              variableNames?: undefined;
                              variables: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                              }[];
                          } | {
                              body: {
                                  nodeType: string;
                                  src: string;
                                  statements: {
                                      expression: {
                                          arguments: never[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  }[];
                              };
                              condition: {
                                  arguments: ({
                                      kind?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type?: undefined;
                                      value?: undefined;
                                  } | {
                                      kind: string;
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                      value: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                              value?: undefined;
                              variableNames?: undefined;
                              variables?: undefined;
                          } | {
                              body?: undefined;
                              condition?: undefined;
                              nodeType: string;
                              src: string;
                              value: {
                                  arguments: ({
                                      arguments: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                  } | {
                                      arguments?: undefined;
                                      functionName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              };
                              variableNames: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              variables?: undefined;
                          })[];
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          statements: ({
                              nodeType: string;
                              src: string;
                              value: {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              };
                              variableNames?: undefined;
                              variables: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                              }[];
                          } | {
                              nodeType: string;
                              src: string;
                              value: {
                                  arguments: ({
                                      arguments: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                  } | {
                                      arguments?: undefined;
                                      functionName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  kind?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              };
                              variableNames: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              variables?: undefined;
                          })[];
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          condition?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  nodeType: string;
                                  src: string;
                                  value: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  variableNames: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                              }[];
                          };
                          condition: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: ({
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments: ({
                                      kind?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type?: undefined;
                                      value?: undefined;
                                  } | {
                                      kind: string;
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                      value: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments?: undefined;
                              functionName?: undefined;
                              name: string;
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      } | {
                          expression: {
                              arguments: ({
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              } | {
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                      } | {
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              name?: undefined;
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  arguments: ({
                                      kind?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type?: undefined;
                                      value?: undefined;
                                  } | {
                                      kind: string;
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                      value: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  kind?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: ({
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  arguments: {
                                      arguments: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          expression: {
                              arguments: ({
                                  arguments?: undefined;
                                  functionName?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              } | {
                                  arguments: ({
                                      arguments: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      }[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      name?: undefined;
                                      nodeType: string;
                                      src: string;
                                  } | {
                                      arguments?: undefined;
                                      functionName?: undefined;
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  })[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          nodeType: string;
                          src: string;
                          value: {
                              kind: string;
                              nodeType: string;
                              src: string;
                              type: string;
                              value: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters?: undefined;
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          condition: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          post: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  nodeType: string;
                                  src: string;
                                  value: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  variableNames: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                              }[];
                          };
                          pre: {
                              nodeType: string;
                              src: string;
                              statements: never[];
                          };
                          src: string;
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: ({
                                  body?: undefined;
                                  condition?: undefined;
                                  expression?: undefined;
                                  nodeType: string;
                                  src: string;
                                  value: {
                                      arguments: ({
                                          arguments?: undefined;
                                          functionName?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      } | {
                                          arguments: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          }[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  variables: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                      type: string;
                                  }[];
                              } | {
                                  body: {
                                      nodeType: string;
                                      src: string;
                                      statements: {
                                          nodeType: string;
                                          src: string;
                                          value: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          variableNames: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          }[];
                                      }[];
                                  };
                                  condition: {
                                      arguments: ({
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      } | {
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  expression?: undefined;
                                  nodeType: string;
                                  src: string;
                                  value?: undefined;
                                  variables?: undefined;
                              } | {
                                  body?: undefined;
                                  condition?: undefined;
                                  expression: {
                                      arguments: ({
                                          arguments?: undefined;
                                          functionName?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      } | {
                                          arguments: ({
                                              arguments?: undefined;
                                              functionName?: undefined;
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          } | {
                                              arguments: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                              functionName: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              name?: undefined;
                                              nodeType: string;
                                              src: string;
                                          })[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                                  value?: undefined;
                                  variables?: undefined;
                              })[];
                          };
                          condition: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                      }[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  arguments: {
                                      arguments: ({
                                          kind: string;
                                          name?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      } | {
                                          kind?: undefined;
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      })[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  src: string;
              } | {
                  body: {
                      nodeType: string;
                      src: string;
                      statements: ({
                          body?: undefined;
                          cases?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              kind?: undefined;
                              nodeType: string;
                              src: string;
                              type?: undefined;
                              value?: undefined;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body: {
                              nodeType: string;
                              src: string;
                              statements: {
                                  expression: {
                                      arguments: never[];
                                      functionName: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                          };
                          cases?: undefined;
                          condition: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          cases?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments: {
                                  arguments: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  }[];
                                  functionName: {
                                      name: string;
                                      nodeType: string;
                                      src: string;
                                  };
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              kind?: undefined;
                              nodeType: string;
                              src: string;
                              type?: undefined;
                              value?: undefined;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body?: undefined;
                          cases?: undefined;
                          condition?: undefined;
                          expression: {
                              arguments: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              }[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          cases?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments?: undefined;
                              functionName?: undefined;
                              kind: string;
                              nodeType: string;
                              src: string;
                              type: string;
                              value: string;
                          };
                          variableNames?: undefined;
                          variables: {
                              name: string;
                              nodeType: string;
                              src: string;
                              type: string;
                          }[];
                      } | {
                          body?: undefined;
                          cases?: undefined;
                          condition?: undefined;
                          expression?: undefined;
                          nodeType: string;
                          src: string;
                          value: {
                              arguments?: undefined;
                              functionName?: undefined;
                              kind: string;
                              nodeType: string;
                              src: string;
                              type: string;
                              value: string;
                          };
                          variableNames: {
                              name: string;
                              nodeType: string;
                              src: string;
                          }[];
                          variables?: undefined;
                      } | {
                          body?: undefined;
                          cases: ({
                              body: {
                                  nodeType: string;
                                  src: string;
                                  statements: ({
                                      body?: undefined;
                                      condition?: undefined;
                                      expression?: undefined;
                                      nodeType: string;
                                      post?: undefined;
                                      pre?: undefined;
                                      src: string;
                                      value: {
                                          arguments: ({
                                              arguments?: undefined;
                                              functionName?: undefined;
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          } | {
                                              arguments: {
                                                  kind: string;
                                                  nodeType: string;
                                                  src: string;
                                                  type: string;
                                                  value: string;
                                              }[];
                                              functionName: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              name?: undefined;
                                              nodeType: string;
                                              src: string;
                                          })[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          kind?: undefined;
                                          nodeType: string;
                                          src: string;
                                          type?: undefined;
                                          value?: undefined;
                                      };
                                      variables: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                      }[];
                                  } | {
                                      body?: undefined;
                                      condition?: undefined;
                                      expression?: undefined;
                                      nodeType: string;
                                      post?: undefined;
                                      pre?: undefined;
                                      src: string;
                                      value: {
                                          arguments?: undefined;
                                          functionName?: undefined;
                                          kind: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      };
                                      variables: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                      }[];
                                  } | {
                                      body: {
                                          nodeType: string;
                                          src: string;
                                          statements: ({
                                              expression: {
                                                  arguments: ({
                                                      arguments?: undefined;
                                                      functionName?: undefined;
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  } | {
                                                      arguments: {
                                                          arguments: {
                                                              name: string;
                                                              nodeType: string;
                                                              src: string;
                                                          }[];
                                                          functionName: {
                                                              name: string;
                                                              nodeType: string;
                                                              src: string;
                                                          };
                                                          nodeType: string;
                                                          src: string;
                                                      }[];
                                                      functionName: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      };
                                                      name?: undefined;
                                                      nodeType: string;
                                                      src: string;
                                                  })[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              nodeType: string;
                                              src: string;
                                              value?: undefined;
                                              variableNames?: undefined;
                                          } | {
                                              expression?: undefined;
                                              nodeType: string;
                                              src: string;
                                              value: {
                                                  arguments: ({
                                                      kind?: undefined;
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                      type?: undefined;
                                                      value?: undefined;
                                                  } | {
                                                      kind: string;
                                                      name?: undefined;
                                                      nodeType: string;
                                                      src: string;
                                                      type: string;
                                                      value: string;
                                                  })[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              variableNames: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                          })[];
                                      };
                                      condition: {
                                          arguments: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          }[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      };
                                      expression?: undefined;
                                      nodeType: string;
                                      post: {
                                          nodeType: string;
                                          src: string;
                                          statements: {
                                              nodeType: string;
                                              src: string;
                                              value: {
                                                  arguments: ({
                                                      kind?: undefined;
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                      type?: undefined;
                                                      value?: undefined;
                                                  } | {
                                                      kind: string;
                                                      name?: undefined;
                                                      nodeType: string;
                                                      src: string;
                                                      type: string;
                                                      value: string;
                                                  })[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              variableNames: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                          }[];
                                      };
                                      pre: {
                                          nodeType: string;
                                          src: string;
                                          statements: never[];
                                      };
                                      src: string;
                                      value?: undefined;
                                      variables?: undefined;
                                  } | {
                                      body: {
                                          nodeType: string;
                                          src: string;
                                          statements: ({
                                              expression?: undefined;
                                              nodeType: string;
                                              src: string;
                                              value: {
                                                  arguments: {
                                                      arguments: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      }[];
                                                      functionName: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      };
                                                      nodeType: string;
                                                      src: string;
                                                  }[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              variables: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                                  type: string;
                                              }[];
                                          } | {
                                              expression: {
                                                  arguments: ({
                                                      arguments?: undefined;
                                                      functionName?: undefined;
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  } | {
                                                      arguments: ({
                                                          arguments?: undefined;
                                                          functionName?: undefined;
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      } | {
                                                          arguments: ({
                                                              kind?: undefined;
                                                              name: string;
                                                              nodeType: string;
                                                              src: string;
                                                              type?: undefined;
                                                              value?: undefined;
                                                          } | {
                                                              kind: string;
                                                              name?: undefined;
                                                              nodeType: string;
                                                              src: string;
                                                              type: string;
                                                              value: string;
                                                          })[];
                                                          functionName: {
                                                              name: string;
                                                              nodeType: string;
                                                              src: string;
                                                          };
                                                          name?: undefined;
                                                          nodeType: string;
                                                          src: string;
                                                      })[];
                                                      functionName: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      };
                                                      name?: undefined;
                                                      nodeType: string;
                                                      src: string;
                                                  })[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              nodeType: string;
                                              src: string;
                                              value?: undefined;
                                              variables?: undefined;
                                          })[];
                                      };
                                      condition: {
                                          arguments: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          }[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      };
                                      expression?: undefined;
                                      nodeType: string;
                                      post?: undefined;
                                      pre?: undefined;
                                      src: string;
                                      value?: undefined;
                                      variables?: undefined;
                                  } | {
                                      body?: undefined;
                                      condition?: undefined;
                                      expression: {
                                          arguments: ({
                                              arguments?: undefined;
                                              functionName?: undefined;
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          } | {
                                              arguments: ({
                                                  arguments: ({
                                                      kind?: undefined;
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                      type?: undefined;
                                                      value?: undefined;
                                                  } | {
                                                      kind: string;
                                                      name?: undefined;
                                                      nodeType: string;
                                                      src: string;
                                                      type: string;
                                                      value: string;
                                                  })[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  kind?: undefined;
                                                  nodeType: string;
                                                  src: string;
                                                  type?: undefined;
                                                  value?: undefined;
                                              } | {
                                                  arguments?: undefined;
                                                  functionName?: undefined;
                                                  kind: string;
                                                  nodeType: string;
                                                  src: string;
                                                  type: string;
                                                  value: string;
                                              })[];
                                              functionName: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              name?: undefined;
                                              nodeType: string;
                                              src: string;
                                          })[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      post?: undefined;
                                      pre?: undefined;
                                      src: string;
                                      value?: undefined;
                                      variables?: undefined;
                                  })[];
                              };
                              nodeType: string;
                              src: string;
                              value: {
                                  kind: string;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              };
                          } | {
                              body: {
                                  nodeType: string;
                                  src: string;
                                  statements: ({
                                      body?: undefined;
                                      condition?: undefined;
                                      expression?: undefined;
                                      nodeType: string;
                                      src: string;
                                      value: {
                                          kind: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                          value: string;
                                      };
                                      variables: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                          type: string;
                                      }[];
                                  } | {
                                      body: {
                                          nodeType: string;
                                          src: string;
                                          statements: {
                                              nodeType: string;
                                              src: string;
                                              value: {
                                                  arguments: {
                                                      arguments: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      }[];
                                                      functionName: {
                                                          name: string;
                                                          nodeType: string;
                                                          src: string;
                                                      };
                                                      nodeType: string;
                                                      src: string;
                                                  }[];
                                                  functionName: {
                                                      name: string;
                                                      nodeType: string;
                                                      src: string;
                                                  };
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              variableNames: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                          }[];
                                      };
                                      condition: {
                                          name: string;
                                          nodeType: string;
                                          src: string;
                                      };
                                      expression?: undefined;
                                      nodeType: string;
                                      src: string;
                                      value?: undefined;
                                      variables?: undefined;
                                  } | {
                                      body?: undefined;
                                      condition?: undefined;
                                      expression: {
                                          arguments: ({
                                              arguments?: undefined;
                                              functionName?: undefined;
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          } | {
                                              arguments: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              }[];
                                              functionName: {
                                                  name: string;
                                                  nodeType: string;
                                                  src: string;
                                              };
                                              name?: undefined;
                                              nodeType: string;
                                              src: string;
                                          })[];
                                          functionName: {
                                              name: string;
                                              nodeType: string;
                                              src: string;
                                          };
                                          nodeType: string;
                                          src: string;
                                      };
                                      nodeType: string;
                                      src: string;
                                      value?: undefined;
                                      variables?: undefined;
                                  })[];
                              };
                              nodeType: string;
                              src: string;
                              value: string;
                          })[];
                          condition?: undefined;
                          expression: {
                              arguments: ({
                                  kind?: undefined;
                                  name: string;
                                  nodeType: string;
                                  src: string;
                                  type?: undefined;
                                  value?: undefined;
                              } | {
                                  kind: string;
                                  name?: undefined;
                                  nodeType: string;
                                  src: string;
                                  type: string;
                                  value: string;
                              })[];
                              functionName: {
                                  name: string;
                                  nodeType: string;
                                  src: string;
                              };
                              nodeType: string;
                              src: string;
                          };
                          nodeType: string;
                          src: string;
                          value?: undefined;
                          variableNames?: undefined;
                          variables?: undefined;
                      })[];
                  };
                  name: string;
                  nodeType: string;
                  parameters: {
                      name: string;
                      nodeType: string;
                      src: string;
                      type: string;
                  }[];
                  returnVariables?: undefined;
                  src: string;
              })[];
          };
          contents: string;
          id: number;
          language: string;
          name: string;
      }[]
    • immutableReferences: {}
      • metadata: string
      • networks: {}
        • schemaVersion: string
        • source: string
        • sourceMap: string
        • sourcePath: string
        • updatedAt: string
        • userdoc: {
              kind: string;
              methods: {};
              version: number;
          }
          • kind: string
          • methods: {}
            • version: number

          Generated using TypeDoc